/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.ProcessoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Etapa;
import br.com.sgs.entity.Processo;
import br.com.sgs.entity.ModeloSolicitacao;
import br.com.sgs.fachada.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Eric
 */
@ManagedBean(name="modeloSolicitacaoMB")
@ViewScoped
public class ModeloSolicitacaoMB implements Serializable {
    
    
    private List<ModeloSolicitacao> lssolicitacao = new ArrayList<ModeloSolicitacao>();
    
    private ModeloSolicitacao modelosolicitacaoselecionada;
       
    //parametro de busca
    private String busca;
    
    //visualizar
    private String strdescricao;
    private String strstatus;
    private String strdepartamento;
    private Date strdtcriacao;
    private Date strprazo;
    
    private List<Etapa> lsetapa = new ArrayList<Etapa>();
    private List<Processo> lsprocesso = new ArrayList<Processo>();
    private List<String> lsstatus = new ArrayList<String>();
    
    /**
     * Creates a new instance of InstituicaoNew
     */
    public ModeloSolicitacaoMB() {
    }
    
    @PostConstruct
    public void init() {
        try {

            ModeloSolicitacaoIFachada ifach = new ModeloSolicitacaoFachada();
            setLssolicitacao(ifach.findModeloSolicitacao());        
            
        } catch (Exception e) {
            System.err.println("Erro no init do solicitacaoMB");
        }
    }
   
    public void atualizarTabela() {
        try {

            ModeloSolicitacaoIFachada ifach = new ModeloSolicitacaoFachada();
            setLssolicitacao(ifach.findModeloSolicitacao());        


        } catch (Exception e) {
            System.err.println("Erro no atualizarTabela");
        }
    }

    
    public void buscar() {
        try {
            
             ModeloSolicitacaoIFachada ifach = new ModeloSolicitacaoFachada();
             setLssolicitacao(ifach.findModeloSolicitacaoByAll(getBusca(), null, null, null, null, getLsstatus()));  
            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void excluir() {
        try {
//
//            IFachada ifach = new Fachada();
//
//            ModeloSolicitacao solicitacao = getModelosolicitacaoselecionada();
//
//            ifach.alterar(solicitacao);
//
//            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
//            atualizarTabela();

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
        }

    }

    public String editar() {
        try {
           return "SOLICITACAOLIST";
        } catch (Exception e) {
           return null;
        }
    }
   
    public void visualizar(ModeloSolicitacao modelosolicitacao) {
        try {

            setModelosolicitacaoselecionada(modelosolicitacao);
            strdescricao = getModelosolicitacaoselecionada().getDescricao();
            strdtcriacao = getModelosolicitacaoselecionada().getDtcriacao();
            buscarEtapa();

        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
    
    public void selecionarRegistro(ModeloSolicitacao modelosolicitacao) {
        try {

            setModelosolicitacaoselecionada(modelosolicitacao);

        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }

    }
    
    public void buscarEtapa() {
        try {
                        
           lsetapa = getModelosolicitacaoselecionada().getLsetapa();

        } catch (Exception e) {
            System.err.println("Erro no metodo buscarProcessos");
            e.printStackTrace();
        }
    }
    
      public void buscarProcesso() {
        try {

            lsprocesso = getModelosolicitacaoselecionada().getLsetapa().get(0).getLsprocesso();

        } catch (Exception e) {
            System.err.println("Erro no metodo buscarProcessos");
            e.printStackTrace();
        }
    }
     
    public String strStatusProcessoLabel(int st) {
        return MessageBundleLoader.getMessage(ProcessoAux.getStatusLabel(st));
    }
    

    /**
     * @return the strdescricao
     */
    public String getStrdescricao() {
        return strdescricao;
    }

    /**
     * @param strdescricao the strdescricao to set
     */
    public void setStrdescricao(String strdescricao) {
        this.strdescricao = strdescricao;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }

    /**
     * @return the strdepartamento
     */
    public String getStrdepartamento() {
        return strdepartamento;
    }

    /**
     * @param strdepartamento the strdepartamento to set
     */
    public void setStrdepartamento(String strdepartamento) {
        this.strdepartamento = strdepartamento;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }

    /**
     * @return the strprazo
     */
    public Date getStrprazo() {
        return strprazo;
    }

    /**
     * @param strprazo the strprazo to set
     */
    public void setStrprazo(Date strprazo) {
        this.strprazo = strprazo;
    }

    /**
     * @return the lssolicitacao
     */
    public List<ModeloSolicitacao> getLssolicitacao() {
        return lssolicitacao;
    }

    /**
     * @param lssolicitacao the lssolicitacao to set
     */
    public void setLssolicitacao(List<ModeloSolicitacao> lssolicitacao) {
        this.lssolicitacao = lssolicitacao;
    }

    /**
     * @return the lsetapa
     */
    public List<Etapa> getLsetapa() {
        return lsetapa;
    }

    /**
     * @param lsetapa the lsetapa to set
     */
    public void setLsetapa(List<Etapa> lsetapa) {
        this.lsetapa = lsetapa;
    }

    /**
     * @return the lsstatus
     */
    public List<String> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<String> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the busca
     */
    public String getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(String busca) {
        this.busca = busca;
    }

    /**
     * @return the lsprocesso
     */
    public List<Processo> getLsprocesso() {
        return lsprocesso;
    }

    /**
     * @param lsprocesso the lsprocesso to set
     */
    public void setLsprocesso(List<Processo> lsprocesso) {
        this.lsprocesso = lsprocesso;
    }

    /**
     * @return the modelosolicitacaoselecionada
     */
    public ModeloSolicitacao getModelosolicitacaoselecionada() {
        return modelosolicitacaoselecionada;
    }

    /**
     * @param modelosolicitacaoselecionada the modelosolicitacaoselecionada to set
     */
    public void setModelosolicitacaoselecionada(ModeloSolicitacao modelosolicitacaoselecionada) {
        this.modelosolicitacaoselecionada = modelosolicitacaoselecionada;
    }


}
